// 垃圾回收机制学习，内存泄漏优化的点及后续编写代码时需要注意的点
// 1、	计时器和回调函数timers及时清除
// 2、	谨慎使用console
// 3、	避免循环引用
// 4、	避免全局变量
// 5、	操作DOM时谨防DOM泄露
// 6、	谨慎使用js闭包
// 7、	适时释放事件监听器

// 1、全局对象导致内存泄漏
var globalData = [];

function addToGlobalData() {
  var data = new Array(1000000).fill('Some data');
  globalData.push(data);
}

function triggerMemoryLeak() {
  var i = 0;

  setInterval(function() {
    addToGlobalData();
    console.log("Global data length: " + globalData.length);
  }, 1000);
}

triggerMemoryLeak();

// // 2、避免循环引用
// function createCircularReference() {
//     var objA = {};
//     var objB = {};

//     objA.ref = objB;
//     objB.ref = objA;

//     return objA;
// }
  
// function triggerMemoryLeak() {
//     var leakedObjects = [];

//     setInterval(function () {
//         var obj = createCircularReference();
//         leakedObjects.push(obj);
//         console.log("Leaked objects count: " + leakedObjects.length);
//     }, 1000);
// }
  
// triggerMemoryLeak();

// // 3、需要适时释放事件监听器
// function addEventListenerLeak() {
//     var button = document.getElementById('myButton');

//     button.addEventListener('click', function() {
//         // 处理点击事件的逻辑
//     });
// }

// function triggerMemoryLeak() {
//     var i = 0;

//     setInterval(function() {
//         addEventListenerLeak();
//         console.log("Event listeners count: " + (++i));
//     }, 1000);
// }

// triggerMemoryLeak();
  